package com.api.syh56.shengyunhui.util;

public class LocationUtils {

    private static final double EARTH_RADIUS = 6378137.0; // 地球半径，单位为米

    /**
     * 根据经纬度计算两个地点之间的距离（千米为单位）。
     *
     * @param startLat 起始点纬度
     * @param startLng 起始点经度
     * @param endLat   终点纬度
     * @param endLng   终点经度
     * @return 返回的距离，单位为千米
     */
    public static double calculateDistance(double startLat, double startLng, double endLat, double endLng) {
        double latDistance = Math.toRadians(endLat - startLat);
        double lngDistance = Math.toRadians(endLng - startLng);

        double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
                + Math.cos(Math.toRadians(startLat)) * Math.cos(Math.toRadians(endLat))
                * Math.sin(lngDistance / 2) * Math.sin(lngDistance / 2);

        double angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

        return angle * EARTH_RADIUS / 1000; // 转换为千米
    }


    /**
     * 解析经纬度字符串。
     *
     * @param location 经纬度字符串，格式为"经度,纬度"
     * @return 返回包含纬度和经度的数组，第一个元素是纬度，第二个元素是经度
     */
    public static double[] parseLocation(String location) {
        String[] parts = location.split(",");
        if (parts.length != 2) {
            throw new IllegalArgumentException("Invalid location format");
        }
        return new double[]{Double.parseDouble(parts[0]), Double.parseDouble(parts[1])};
    }
}